iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Modern Web

30天前端學習筆記心得系列 第 24

Day22-Javascript資料型態(字串、Symbol)

  • 分享至 

  • xImage
  •  

字串(String)

一種資料型別,用來儲存文字、顯示文字、進行文字處理

  • 字串表示方式

// 單引號
const str1 = 'IThome';
// 雙引號
const str2 = "IThome";

console.log(str1); // IThome
console.log(str2); // IThome
  • 字串長度(length)

const str = "IThome";

console.log(str.length); // 6
  • 字串方法

charAt():指定索引位置字元
charCodeAt():指定索引位置字元Unicode碼點

let str = "Hello world";

let char = str.charAt(0);
let codePoint = str.charCodeAt(0);

console.log(char); // "H"
console.log(codePoint); // 72

concat():兩個或多個字串連接起來

const str1 = "Hello";
const str2 = "World";

console.log(str1 + str2); // HelloWorld

indexOf():找出指定字元或在字串中位置

let str = "Hello world";
let subStr = "world";

let index = str.indexOf(subStr);

console.log(index); // 7

lastIndexOf():返回指定子字符串在字符串中最後一次出現位置

let str = "Hello world world";
let subStr = "world";

let index = str.lastIndexOf(subStr);

console.log(index); // 12

replace():將字串指定字元或字串替換成另一個字元或字串

var str = "Hello world";

// "world" 替換 "everyone"
var Str1 = str.replace("world", "everyone");

console.log(Str1); // "Hello everyone"

slice():擷取字串一部分


var str = "Hello world";

// 取字串 "Hello"
var Str1 = str.slice(0, 5);

console.log(Str1); // "Hello"

split():字串分割成字串陣列

let str = "Hello world";

// 使用分隔符 ", " 字符串分割成一個或多個子字符串
let arr = str.split(", ");

console.log(arr); // ["Hello", "world!"]

substr():擷取字串一部分

  • substr(start [, length])

substring():擷取字串一部分

  • substring(start, end)
const str = "Hello world";

// substr()
const substr1 = str.substr(2); // "lo world"
const substr2 = str.substr(2, 5); // "lo wo"

// substring()
const substring1 = str.substring(2, 8); // "lo worl"
const substring2 = str.substring(2); // "lo world"

toLowerCase():字串轉換成小寫
toUpperCase():字串轉換成大寫

var str = "Hello world";

// 轉換小寫
var newStr = str.toLowerCase();

console.log(newStr); // "hello world"

// 轉換大寫
var newStr2 = str.toUpperCase();

console.log(newStr2); // "HELLO WORLD"
  • 字串運算

與其他字串和數字進行運算

const str1 = "Hello";
const str2 = "World";

console.log(str1 + str2); // HelloWorld

字串與數字運算:
JavaScript
const str = "1234";
const num = 1010;

console.log(str + num); // 12341010

Symbol

是一種獨特且不可變資料型態,可以被用作對象屬性名稱,也可以避免與其他屬性名稱衝突,防止屬性名稱被意外覆蓋

  • 特性和注意事項

    • 可以被當作 對象屬性名稱
    • 可以被當作 函式參數
    • 不可以被當作 變數名稱函式名稱
    • 不可以被當作 字串或數字
  • 創建方式

    • Symbol()函數 函數返回一個 新的Symbol值
    • Symbol.for()函數 函數返回一個 已存在Symbol值
    • Symbol值不存在,會創建一個 新的Symbol值
// 創建一個新Symbol值
const mySymbol = Symbol();

// 用Symbol值為對象屬性名稱
const obj = {
  [mySymbol]: 'This is a Symbol property.'
};

// 取得Symbol屬性值
const value = obj[mySymbol];

// 將Symbol值為函式參數
function foo(symbol) {
  console.log(symbol); // Symbol()
}
foo(mySymbol);

Symbol應用

  • 創建私有屬性

無法被外部訪問

const obj = {
  [Symbol('id')]: 12345,
  name: 'Cindy Huang'
};

console.log(obj.id); // 12345
console.log(obj.name); // Cindy Huang

// 嘗試訪問私有屬性
obj.id = 45678; // 錯誤
  • 創建枚舉類型

一種安全和可預測方式表示有限的值集合

const weekdays = {
  MONDAY: Symbol('monday'),
  TUESDAY: Symbol('tuesday'),
  WEDNESDAY: Symbol('wednesday'),
  THURSDAY: Symbol('thursday'),
  FRIDAY: Symbol('friday'),
  SATURDAY: Symbol('saturday'),
  SUNDAY: Symbol('sunday')
};
function isWeekend(day) {
  return day === weekdays.SATURDAY || day === weekdays.SUNDAY;
}
console.log(isWeekend(weekdays.MONDAY)); // false
console.log(isWeekend(weekdays.SATURDAY)); // true
  • 創建元編程API

一種更靈活和可擴展方式操作 JavaScript代碼

const hasProperty = Symbol('hasProperty');

function has(obj, property) {
  return obj[hasProperty](property);
}
const obj = {
  name: 'Cindy Huang'
};
console.log(has(obj, 'name')); // true
console.log(has(obj, 'age')); // false

上一篇
Day22-Javascript資料型態(布林值、數值)
下一篇
Day23-Javascript運算子
系列文
30天前端學習筆記心得34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言